/** 复制对象工具类 */

/**
 * <p>复制源对象中的值到目标对象-检查是否为空</p>
 * @author starshine 小郭
 */
export function copyFieldValue(original: any, target: any) {
    if (!original || !target) return
    // 循环源对象
    for (let originalKey in original) {
        // 通过字段找出属性
        let tempValue = original[originalKey]
        // 检查属性是否有值
        if (tempValue) {
            // 将值赋值给目标对象
            target[originalKey] = tempValue
        }
    }
}

/**
 * <p>填充原对象和目标对象交集的字段值</p>
 * target 有什么字段就去 original 中找相同的字段，找到就赋值，没有就不处理
 * @author starshine 小郭
 */
export function fillTargetFieldValue(original: any, target: any) {
    if (!original || !target) return
    // 循环源对象
    for (let targetKey in target) {
        // 通过字段找出属性
        let tempValue = original[targetKey]
        // 检查属性是否有值
        if (tempValue) {
            // 将值赋值给目标对象
            target[targetKey] = tempValue
        }
    }
}

/**
 * <p>深度拷贝目标的对象中的字段在源对象存在的就拷贝到目标对象</p>
 * @author starshine 小郭
 */
export function deepFillTargetFieldValue(original: any, target: any) {
    if (!original || !target) return
    const temp = JSON.parse(JSON.stringify(original))
    fillTargetFieldValue(temp, target)
}


/**
 * <p>深度拷贝对象到目标对象</p>
 * @author starshine 小郭
 */
export function deepCopyFieldValue(original: any, target: any) {
    if (!original || !target) return
    const temp = JSON.parse(JSON.stringify(original))
    copyFieldValue(temp, target)
}